package 反转字符串II;

import java.util.Arrays;

public class Solution {
    /*
    给定一个字符串 s 和一个整数 k，从字符串开头算起，每计数至 2k 个字符，就反转这 2k 字符中的前 k 个字符。
    如果剩余字符少于 k 个，则将剩余字符全部反转。
    如果剩余字符小于 2k 但大于或等于 k 个，则反转前 k 个字符，其余字符保持原样。
     */
    public String reverseStr(String s, int k) {
        // 双指针
        char[] sCharArray = s.toCharArray();
        int length = s.length();
        for (int i = 0; i < length; i += 2 * k) {
            int start = i;
            int end = i + k - 1;
            // 如果剩余字符少于 k 个,那么就需要更新end索引
            end = end < length ? end : length - 1;
            reverseString(sCharArray, start, end);
            /*if (end < length ) {
                // 剩余字符大于或等于 k ，则反转前 k 个字符，其余字符保持原样
                reverseString(sCharArray, start, end);
            }else {
                // 如果剩余字符少于 k 个，则将剩余字符全部反转
                end = length - 1;
                reverseString(sCharArray, start, end);
            }*/
        }
        return new String(sCharArray);
    }

    public void reverseString(char[] s, Integer start, Integer end) {
        while (start < end) {
            char temp = s[start];
            s[start] = s[end];
            s[end] = temp;
            start++;
            end--;
        }
    }
}
